import axios, { AxiosRequestConfig, AxiosResponse } from 'axios';
import { ElMessage } from 'element-plus'
import { baseURL } from '@/config/index'
// import router from '@/router/index'
// import { getLocal } from '@/utils/local'

const request = axios.create({
    baseURL,
    timeout: 10000, // 请求超时 10s
    headers: {
        'Content-Type': 'application/json;charset=UTF-8'
    }
})

// 前置拦截器（发起请求之前的拦截）
request.interceptors.request.use(
    (config: AxiosRequestConfig) => {
        /**
         * 根据你的项目实际情况来对 config 做处理
         * 这里对 config 不做任何处理，直接返回
         */
        // const token: any = getLocal('token')
        // config['headers']['token'] = token
        return config
    },
    (error) => {
        return Promise.reject(error)
    }
)

// 后置拦截器（获取到响应时的拦截）
request.interceptors.response.use(
    (response: AxiosResponse<any>) => {
        /**
         * 根据你的项目实际情况来对 response 和 error 做处理
         * 这里对 response 和 error 不做任何处理，直接返回
         */
        // const res = response.data
        // if (response.status !== 200) {
        //     ElMessage.error('服务器异常')
        // } else if (response.data.code !== 200) {
            // ElMessage.error(response.data.msg)
            // setTimeout(() => {
            //     router.push('/login')
            // }, 3000);
        // }
        return response.data
    },
    (error) => {
        if (error.message.indexOf('timeout') !== -1) {
            ElMessage.error('网络超时')
        } else if (error.message === 'Network Error') {
            ElMessage.error('网络连接错误')
        } else {
            if (error.response.data) ElMessage.error(error.response.statusText)
            else ElMessage.error('接口路径找不到')
        }
        return Promise.reject(error)
    }
)

export default request
